1. Field of the Invention
The present invention relates to networks carrying relatively heavy traffic loads, and, in particular, to a mechanism for controlling the number of active flows in such a network.
2. Description of the Related Art
Conventional approaches for network resource allocation typically rely on predetermined traffic characteristics. Network traffic can be divided into elastic (e.g., Transport-Control Protocol (TCP)) traffic and non-elastic streaming (e.g., User-Datagram Protocol (UDP)) traffic. These two types of traffic differ in their requirements from the network. Packet-level characteristics of elastic traffic are controlled by the transport protocol and its interactions with the network, whereas non-elastic flows have inherent rate characteristics that should be preserved in the network to avoid losses.
Recent measurement studies have shown that TCP continues to be the dominant traffic type on the Internet. Non-elastic traffic, which primarily uses UDP, is controlled in the network with certain rate-limiting functions to occupy only a specified fraction of the link capacity. TCP, on the other hand, is designed to dynamically adjust its rate and achieve the maximum possible throughput given the current state of the network. When the traffic in a network is elastic, if the total offered traffic in the network exceeds the capacity of a bottle-necked link in the network, then the throughput of each individual flow can become reduced to the point at which a user will abort the connection. This is because, when there is a high arrival rate of new flows from outside the network causing overload within the network, the number of flows traversing the bottle-necked link can grow unbounded. When the number of flows becomes very high, the per-flow throughput is so significantly reduced that the application or the end user may have to abort the transaction. Under such network conditions, it is desirable to control the number of concurrent flows in the network, in order to ensure a minimal service quality to flows-in-progress and to prevent extreme degradation of throughput to individual users. However, controlling the number of active flows involves the estimation of the number of currently-active flows. Direct estimation of this quantity has previously been difficult without using per-flow state information and without the need to determine flow terminations.